package com.xinsoft.common;

import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;

/**
 * 文件名称：SysUserDTO
 * 初始作者： hsm
 * 创建日期：2023
 * 功能说明：用户表DTO
 * <p>
 * =================================================
 * 修改记录：
 * 修改作者 日期 修改内容
 * ================================================
 * Copyright (c) 2019-2020 .All rights reserved.
 */

@Data
public class SysUserDetail implements Serializable , UserDetails {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Integer id;

    /**
     * 区域表ID
     */
    private Integer reginId;

    /**
     * 部门ID
     */
    private String deptId;

    /**
     * 真实姓名
     */
    @NotEmpty(message = "真实姓名不能为空")
    private String realName;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 手机号
     */
    @NotEmpty(message = "手机号不能为空")
    @Pattern(regexp = "^1[0-9]{10}$", message = "手机号不合法")
    private String mobile;

    /**
     * 状态 0:禁用，1:正常
     */
    private Integer status;

    /**
     * 性别
     */
    private Integer sex;

    /**
     * 出生日期
     */
    private Date birth;

    /**
     * 头像地址
     */
    private String picId;

    /**
     * 家庭住址
     */
    private String liveAddress;

    /**
     * 兴趣爱好
     */
    private String hobby;

    /**
     * 从哪注册 1-PC  2-APP
     */
    private Long registerFrom;

    /**
     * 工作卡号
     */
    private String workCard;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 状态 0:禁用，1:正常
     */
    private String statusName;

    /**
     * 状态 0:禁用，1:正常
     */
    private String token;


    private String password ;

    private String username ;

    private boolean accountNonExpired = true;//账号是否没过期

    private boolean accountNonLocked = true;//是否没被锁定

    private boolean credentialsNonExpired = true;//是否没过期

    private boolean enabled= true;;//账号是否可用

    Collection<? extends GrantedAuthority> authorities; //用户的权限集合

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return authorities;
    }
    public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
        this.authorities = authorities;
    }

}